package org.finesys.common.netty.websocket.support;

import org.springframework.core.MethodParameter;
import org.springframework.lang.Nullable;

import io.netty.channel.Channel;

public interface MethodArgumentResolver {
    /**
     * 判断此解析器是否支持给定的方法参数。
     *
     * @param parameter 方法参数，包含方法参数的元数据。
     * @return 如果此解析器支持给定的方法参数，则返回true；否则返回false。
     */

    boolean support(MethodParameter parameter);

    /**
     * 解析方法参数，从给定的通道和上下文中获取对应的参数值。
     *
     * @param parameter 方法参数，包含方法参数的元数据。
     * @param channel   WebSocket通道，用于处理WebSocket连接。
     * @param object    上下文对象，可能包含请求相关的数据或配置。
     * @return 返回解析后的参数值，可能为null。
     * @throws Exception 如果在解析参数过程中发生异常，则抛出该异常。
     */

    @Nullable
    Object resolveArgument(MethodParameter parameter, Channel channel, Object object) throws Exception;

}
